home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / MSINC.PAK / MAPICODE.H < prev    next >
C/C++ Source or Header  |  1997-05-06  |  11KB  |  248 lines

  1. /*
  2.  *  M A P I C O D E . H
  3.  *
  4.  *  Status Codes returned by MAPI routines
  5.  *
  6.  *  Copyright 1986-1996 Microsoft Corporation. All Rights Reserved.
  7.  */
  8.  
  9. #ifndef MAPICODE_H
  10. #define MAPICODE_H
  11. #pragma option -b
  12.  
  13. #if defined (WIN32) && !defined (_WIN32)
  14. #define _WIN32
  15. #endif
  16.  
  17. /* Define S_OK and ITF_* */
  18.  
  19. #ifdef _WIN32
  20. #pragma option -b.
  21. #include <winerror.h>
  22. #pragma option -b
  23. #endif
  24.  
  25. /*
  26.  *  MAPI Status codes follow the style of OLE 2.0 sCodes as defined in the
  27.  *  OLE 2.0 Programmer's Reference and header file scode.h (Windows 3.x)
  28.  *  or winerror.h (Windows NT and Windows 95).
  29.  *
  30.  */
  31.  
  32. /*  On Windows 3.x, status codes have 32-bit values as follows:
  33.  *
  34.  *   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
  35.  *   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
  36.  *  +-+---------------------+-------+-------------------------------+
  37.  *  |S|       Context       | Facil |               Code            |
  38.  *  +-+---------------------+-------+-------------------------------+
  39.  *
  40.  *  where
  41.  *
  42.  *      S - is the severity code
  43.  *
  44.  *          0 - SEVERITY_SUCCESS
  45.  *          1 - SEVERITY_ERROR
  46.  *
  47.  *      Context - context info
  48.  *
  49.  *      Facility - is the facility code
  50.  *
  51.  *          0x0 - FACILITY_NULL     generally useful errors ([SE]_*)
  52.  *          0x1 - FACILITY_RPC      remote procedure call errors (RPC_E_*)
  53.  *          0x2 - FACILITY_DISPATCH late binding dispatch errors
  54.  *          0x3 - FACILITY_STORAGE  storage errors (STG_E_*)
  55.  *          0x4 - FACILITY_ITF      interface-specific errors
  56.  *
  57.  *      Code - is the facility's status code
  58.  *
  59.  *
  60.  */
  61.  
  62. /*
  63.  *  On Windows NT 3.5 and Windows 95, scodes are 32-bit values
  64.  *  laid out as follows:
  65.  *  
  66.  *    3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
  67.  *    1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
  68.  *   +-+-+-+-+-+---------------------+-------------------------------+
  69.  *   |S|R|C|N|r|    Facility         |               Code            |
  70.  *   +-+-+-+-+-+---------------------+-------------------------------+
  71.  *  
  72.  *   where
  73.  *  
  74.  *      S - Severity - indicates success/fail
  75.  *  
  76.  *          0 - Success
  77.  *          1 - Fail (COERROR)
  78.  *  
  79.  *      R - reserved portion of the facility code, corresponds to NT's
  80.  *          second severity bit.
  81.  *  
  82.  *      C - reserved portion of the facility code, corresponds to NT's
  83.  *          C field.
  84.  *  
  85.  *      N - reserved portion of the facility code. Used to indicate a
  86.  *          mapped NT status value.
  87.  *  
  88.  *      r - reserved portion of the facility code. Reserved for internal
  89.  *          use. Used to indicate HRESULT values that are not status
  90.  *          values, but are instead message ids for display strings.
  91.  *  
  92.  *      Facility - is the facility code
  93.  *          FACILITY_NULL                    0x0
  94.  *          FACILITY_RPC                     0x1
  95.  *          FACILITY_DISPATCH                0x2
  96.  *          FACILITY_STORAGE                 0x3
  97.  *          FACILITY_ITF                     0x4
  98.  *          FACILITY_WIN32                   0x7
  99.  *          FACILITY_WINDOWS                 0x8
  100.  *  
  101.  *      Code - is the facility's status code
  102.  *  
  103.  */
  104.  
  105.  
  106.  
  107.  
  108. /*
  109.  *  We can't use OLE 2.0 macros to build sCodes because the definition has
  110.  *  changed and we wish to conform to the new definition.
  111.  */
  112. #define MAKE_MAPI_SCODE(sev,fac,code) \
  113.     ((SCODE) (((unsigned long)(sev)<<31) | ((unsigned long)(fac)<<16) | ((unsigned long)(code))) )
  114.  
  115. /* The following two macros are used to build OLE 2.0 style sCodes */
  116.  
  117. #define MAKE_MAPI_E( err )  (MAKE_MAPI_SCODE( 1, FACILITY_ITF, err ))
  118. #define MAKE_MAPI_S( warn ) (MAKE_MAPI_SCODE( 0, FACILITY_ITF, warn ))
  119.  
  120. #ifdef  SUCCESS_SUCCESS
  121. #undef  SUCCESS_SUCCESS
  122. #endif
  123. #define SUCCESS_SUCCESS     0L
  124.  
  125. /* General errors (used by more than one MAPI object) */
  126.  
  127. #define MAPI_E_CALL_FAILED                              E_FAIL
  128. #define MAPI_E_NOT_ENOUGH_MEMORY                        E_OUTOFMEMORY
  129. #define MAPI_E_INVALID_PARAMETER                        E_INVALIDARG
  130. #define MAPI_E_INTERFACE_NOT_SUPPORTED                  E_NOINTERFACE
  131. #define MAPI_E_NO_ACCESS                                E_ACCESSDENIED
  132.  
  133. #define MAPI_E_NO_SUPPORT                               MAKE_MAPI_E( 0x102 )
  134. #define MAPI_E_BAD_CHARWIDTH                            MAKE_MAPI_E( 0x103 )
  135. #define MAPI_E_STRING_TOO_LONG                          MAKE_MAPI_E( 0x105 )
  136. #define MAPI_E_UNKNOWN_FLAGS                            MAKE_MAPI_E( 0x106 )
  137. #define MAPI_E_INVALID_ENTRYID                          MAKE_MAPI_E( 0x107 )
  138. #define MAPI_E_INVALID_OBJECT                           MAKE_MAPI_E( 0x108 )
  139. #define MAPI_E_OBJECT_CHANGED                           MAKE_MAPI_E( 0x109 )
  140. #define MAPI_E_OBJECT_DELETED                           MAKE_MAPI_E( 0x10A )
  141. #define MAPI_E_BUSY                                     MAKE_MAPI_E( 0x10B )
  142. #define MAPI_E_NOT_ENOUGH_DISK                          MAKE_MAPI_E( 0x10D )
  143. #define MAPI_E_NOT_ENOUGH_RESOURCES                     MAKE_MAPI_E( 0x10E )
  144. #define MAPI_E_NOT_FOUND                                MAKE_MAPI_E( 0x10F )
  145. #define MAPI_E_VERSION                                  MAKE_MAPI_E( 0x110 )
  146. #define MAPI_E_LOGON_FAILED                             MAKE_MAPI_E( 0x111 )
  147. #define MAPI_E_SESSION_LIMIT                            MAKE_MAPI_E( 0x112 )
  148. #define MAPI_E_USER_CANCEL                              MAKE_MAPI_E( 0x113 )
  149. #define MAPI_E_UNABLE_TO_ABORT                          MAKE_MAPI_E( 0x114 )
  150. #define MAPI_E_NETWORK_ERROR                            MAKE_MAPI_E( 0x115 )
  151. #define MAPI_E_DISK_ERROR                               MAKE_MAPI_E( 0x116 )
  152. #define MAPI_E_TOO_COMPLEX                              MAKE_MAPI_E( 0x117 )
  153. #define MAPI_E_BAD_COLUMN                               MAKE_MAPI_E( 0x118 )
  154. #define MAPI_E_EXTENDED_ERROR                           MAKE_MAPI_E( 0x119 )
  155. #define MAPI_E_COMPUTED                                 MAKE_MAPI_E( 0x11A )
  156. #define MAPI_E_CORRUPT_DATA                             MAKE_MAPI_E( 0x11B )
  157. #define MAPI_E_UNCONFIGURED                             MAKE_MAPI_E( 0x11C )
  158. #define MAPI_E_FAILONEPROVIDER                          MAKE_MAPI_E( 0x11D )
  159. #define MAPI_E_UNKNOWN_CPID                             MAKE_MAPI_E( 0x11E )
  160. #define MAPI_E_UNKNOWN_LCID                             MAKE_MAPI_E( 0x11F )
  161.  
  162. /* Flavors of E_ACCESSDENIED, used at logon */
  163.  
  164. #define MAPI_E_PASSWORD_CHANGE_REQUIRED                 MAKE_MAPI_E( 0x120 )
  165. #define MAPI_E_PASSWORD_EXPIRED                         MAKE_MAPI_E( 0x121 )
  166. #define MAPI_E_INVALID_WORKSTATION_ACCOUNT              MAKE_MAPI_E( 0x122 )
  167. #define MAPI_E_INVALID_ACCESS_TIME                      MAKE_MAPI_E( 0x123 )
  168. #define MAPI_E_ACCOUNT_DISABLED                         MAKE_MAPI_E( 0x124 )
  169.  
  170. /* MAPI base function and status object specific errors and warnings */
  171.  
  172. #define MAPI_E_END_OF_SESSION                           MAKE_MAPI_E( 0x200 )
  173. #define MAPI_E_UNKNOWN_ENTRYID                          MAKE_MAPI_E( 0x201 )
  174. #define MAPI_E_MISSING_REQUIRED_COLUMN                  MAKE_MAPI_E( 0x202 )
  175. #define MAPI_W_NO_SERVICE                               MAKE_MAPI_S( 0x203 )
  176.  
  177. /* Property specific errors and warnings */
  178.  
  179. #define MAPI_E_BAD_VALUE                                MAKE_MAPI_E( 0x301 )
  180. #define MAPI_E_INVALID_TYPE                             MAKE_MAPI_E( 0x302 )
  181. #define MAPI_E_TYPE_NO_SUPPORT                          MAKE_MAPI_E( 0x303 )
  182. #define MAPI_E_UNEXPECTED_TYPE                          MAKE_MAPI_E( 0x304 )
  183. #define MAPI_E_TOO_BIG                                  MAKE_MAPI_E( 0x305 )
  184. #define MAPI_E_DECLINE_COPY                             MAKE_MAPI_E( 0x306 )
  185. #define MAPI_E_UNEXPECTED_ID                            MAKE_MAPI_E( 0x307 )
  186.  
  187. #define MAPI_W_ERRORS_RETURNED                          MAKE_MAPI_S( 0x380 )
  188.  
  189. /* Table specific errors and warnings */
  190.  
  191. #define MAPI_E_UNABLE_TO_COMPLETE                       MAKE_MAPI_E( 0x400 )
  192. #define MAPI_E_TIMEOUT                                  MAKE_MAPI_E( 0x401 )
  193. #define MAPI_E_TABLE_EMPTY                              MAKE_MAPI_E( 0x402 )
  194. #define MAPI_E_TABLE_TOO_BIG                            MAKE_MAPI_E( 0x403 )
  195.  
  196. #define MAPI_E_INVALID_BOOKMARK                         MAKE_MAPI_E( 0x405 )
  197.  
  198. #define MAPI_W_POSITION_CHANGED                         MAKE_MAPI_S( 0x481 )
  199. #define MAPI_W_APPROX_COUNT                             MAKE_MAPI_S( 0x482 )
  200.  
  201. /* Transport specific errors and warnings */
  202.  
  203. #define MAPI_E_WAIT                                     MAKE_MAPI_E( 0x500 )
  204. #define MAPI_E_CANCEL                                   MAKE_MAPI_E( 0x501 )
  205. #define MAPI_E_NOT_ME                                   MAKE_MAPI_E( 0x502 )
  206.  
  207. #define MAPI_W_CANCEL_MESSAGE                           MAKE_MAPI_S( 0x580 )
  208.  
  209. /* Message Store, Folder, and Message specific errors and warnings */
  210.  
  211. #define MAPI_E_CORRUPT_STORE                            MAKE_MAPI_E( 0x600 )
  212. #define MAPI_E_NOT_IN_QUEUE                             MAKE_MAPI_E( 0x601 )
  213. #define MAPI_E_NO_SUPPRESS                              MAKE_MAPI_E( 0x602 )
  214. #define MAPI_E_COLLISION                                MAKE_MAPI_E( 0x604 )
  215. #define MAPI_E_NOT_INITIALIZED                          MAKE_MAPI_E( 0x605 )
  216. #define MAPI_E_NON_STANDARD                             MAKE_MAPI_E( 0x606 )
  217. #define MAPI_E_NO_RECIPIENTS                            MAKE_MAPI_E( 0x607 )
  218. #define MAPI_E_SUBMITTED                                MAKE_MAPI_E( 0x608 )
  219. #define MAPI_E_HAS_FOLDERS                              MAKE_MAPI_E( 0x609 )
  220. #define MAPI_E_HAS_MESSAGES                             MAKE_MAPI_E( 0x60A )
  221. #define MAPI_E_FOLDER_CYCLE                             MAKE_MAPI_E( 0x60B )
  222.  
  223. #define MAPI_W_PARTIAL_COMPLETION                       MAKE_MAPI_S( 0x680 )
  224.  
  225. /* Address Book specific errors and warnings */
  226.  
  227. #define MAPI_E_AMBIGUOUS_RECIP                          MAKE_MAPI_E( 0x700 )
  228.  
  229. /* The range 0x0800 to 0x08FF is reserved */
  230.  
  231. /* Obsolete typing shortcut that will go away eventually. */
  232. #ifndef MakeResult
  233. #define MakeResult(_s)  ResultFromScode(_s)
  234. #endif
  235.  
  236. /* We expect these to eventually be defined by OLE, but for now,
  237.  * here they are.  When OLE defines them they can be much more
  238.  * efficient than these, but these are "proper" and don't make
  239.  * use of any hidden tricks.
  240.  */
  241. #ifndef HR_SUCCEEDED
  242. #define HR_SUCCEEDED(_hr) SUCCEEDED((SCODE)(_hr))
  243. #define HR_FAILED(_hr) FAILED((SCODE)(_hr))
  244. #endif
  245.  
  246. #pragma option -b.
  247. #endif  /* MAPICODE_H */
  248.